package com.payment.system.service;

import com.alibaba.fastjson.JSONObject;
import com.payment.common.base.AjaxResult;
import com.payment.system.domain.PlanNew;

import java.math.BigDecimal;
import java.text.ParseException;
import java.util.List;

/**
 * 新计划 服务层
 * 
 * @author payment
 * @date 2019-07-02
 */
public interface IPlanNewService 
{
	/**
     * 查询新计划信息
     * 
     * @param id 新计划ID
     * @return 新计划信息
     */
	public PlanNew selectPlanNewById(String id);
	
	/**
     * 查询新计划列表
     * 
     * @param planNew 新计划信息
     * @return 新计划集合
     */
	public List<PlanNew> selectPlanNewList(PlanNew planNew);

	/**
	 * 查询新计划列表  不加密
	 *
	 * @param planNew 新计划信息
	 * @return 新计划集合
	 */
	public List<PlanNew> selectPlanNewListNoEncrypt(PlanNew planNew);

	/**
     * 新增新计划
     * 
     * @param planNew 新计划信息
     * @return 结果
     */
	public int insertPlanNew(PlanNew planNew);
	
	/**
     * 修改新计划
     * 
     * @param planNew 新计划信息
     * @return 结果
     */
	public int updatePlanNew(PlanNew planNew);
		
	/**
     * 删除新计划信息
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	public int deletePlanNewByIds(String ids);
	
	/**
	 * 生成预览计划
	 * 
	 * @param carIdA
	 *            A卡id
	 * @param carIdB
	 *            B卡id
	 * @param cardNumberA
	 *            A卡卡号
	 * @param cardNumberB
	 *            B卡卡号
	 * @param cardNameA
	 *            A卡银行名称
	 * @param cardNameB
	 *            B卡银行名称
	 * @param planMoeny
	 *            还款金额
	 * @param dateStr
	 *            还款时间数组
	 * @param region
	 *            落地地区
	 * @param merid
	 *            商户id
	 * @param planType
	 *            还款类型 1智能2完美还3全额还,4企业还
	 * @param everyNum
	 *            每天还款笔数
	 * @param acqListJson
	 *            通道列表json字符串
	 * @param merchantPhone
	 *            商户手机号
	 * @param merchantName
	 *            商户名称
	 * @return
	 */

	public AjaxResult createPlanEntrance(String carIdA, String carIdB, String cardNumberA, String cardNumberB,
			String cardNameA, String cardNameB, BigDecimal planMoeny, String dateStr, String region, String merid,
			Integer planType, Integer everyNum, String acqListJson, String merchantName, String merchantPhone)
			throws ParseException;


	/**
	 * 获取信用卡列表
	 * @param acqIds
	 * @param merchantId
	 * @param userId
	 * @param cardId
	 * @return
	 */
	public AjaxResult getCardList(String acqIds, String merchantId, String userId, String cardId);


	/**
	 * 提交计划
	 * @param parseObject
	 * @return
	 */
	public AjaxResult submitPlan(JSONObject parseObject);
	/**
	 * 获取通道列表
	 * @param cardId
	 * @param cardNumber
	 * @param type
	 * @param bankCode 
	 * @return
	 */
	public AjaxResult getPlanAcqList(String cardId, String cardNumber, String type, String bankCode);
	/**
	 * app端获取计划列表
	 * @param cardNumber
	 * @param i
	 * @param pageSize
	 * @param type 
	 * @return
	 */
	public AjaxResult getAppPlanList(String cardNumber, int i, Integer pageSize, Integer type);
	/**
	 * 删除计划
	 * @param planId
	 * @param payPwd
	 * @return
	 */
	public AjaxResult deletePlan(String planId,String payPwd);
	/**
	 * 启用或禁用计划
	 * @param planNew
	 * @return
	 */
	AjaxResult updatePlanStatusById(PlanNew planNew);
	
	/**
	 * 生成全额还计划
	 * @param carId
	 * @param cardNumber
	 * @param cardName
	 * @param planMoeny
	 * @param dateStr
	 * @param region
	 * @param everyNum
	 * @param acqListJson
	 * @param merchantName
	 * @param merchantPhone
	 * @return
	 */
	public AjaxResult createQuanEPlan(String carId, String cardNumber, String cardName, BigDecimal planMoeny,
			String dateStr, String region, String merId, Integer everyNum, String acqListJson, String merchantName,
			String merchantPhone);
	
}
